(function() {

	'use strict';

	angular.module('ielApp')
	.factory('AgendaFactory', [ '$http', '$q', '$window', function($http, $q, $window) {

		function add(projeto) {

			$http.post('/ProjetoRelatorioBackEnd/rest/agenda/agendar', projeto)
			.success(function() {

				alert("salvo com sucesso!");
				$window.location.reload();
			})
			.error(function() {

				alert("aconteceu algum erro");
			})
		}

		function verFolha(id) {

			var retorno = $q.defer();

			$http.get('/ProjetoRelatorioBackEnd/rest/folha/folha/' + id)
			.success(function(data) {

				retorno.resolve(data);
			})
			.error(function() {

				alert("Sem conexão com a internet");
			})
			return retorno.promise;

		}

		function verFolhas() {

			var retorno = $q.defer();

			$http.get('/ProjetoRelatorioBackEnd/rest/folha/folhas')
			.success(function(data) {

				retorno.resolve(data);
			})
			.error(function() {

				alert("Sem conexão com a internet");
			})
			return retorno.promise;
		}

		function verAgenda($scope) {

			var retorno = $q.defer();

			$http.get('/ProjetoRelatorioBackEnd/rest/agenda/verTodos/')
			.success(function(data) {

				var soma = 0;
				var condicao = [];
				var dinamica = 0;

				for (var i = 0; i < data.length; i++) {


					data[i].dataRecebimento = moment(data[i].dataRecebimento).format('L');
					data[i].dataInicio = moment(data[i].dataInicio).format('L');
					data[i].dataEntrega = moment(data[i].dataEntrega).format('L');

					soma += data[i].folha.valor;


				}


				retorno.resolve(data);
				$scope.soma = soma;

			})
			.error(function() {

				alert("Sem conexão com a internet");
			})
			return retorno.promise;
		}

		function verAgendaPorStatus($scope, filtro) {

			var retorno = $q.defer();

			if(filtro == '') {

				var somaPorStatus = 0;
				$scope.somaPorStatus = somaPorStatus;
				$scope.agendaPorStatus = '';

			}
			else if(filtro == 'todos'){

				var somaPorStatus = 0;


				$http.get('/ProjetoRelatorioBackEnd/rest/agenda/verTodos/')
				.success(function(data) {

					for (var i = 0; i < data.length; i++) {


						data[i].dataRecebimento = moment(data[i].dataRecebimento).format('L');
						data[i].dataInicio = moment(data[i].dataInicio).format('L');
						data[i].dataEntrega = moment(data[i].dataEntrega).format('L');

						somaPorStatus += data[i].folha.valor;


					}


					retorno.resolve(data);
					$scope.somaPorStatus = somaPorStatus;

				})
				.error(function() {

					alert("Sem conexão com a internet");
				})
				return retorno.promise;

			}
			else {

				$http.get('/ProjetoRelatorioBackEnd/rest/agenda/verTodosPorStatus/'+ filtro)
				.success(function(data) {

					var somaPorStatus = 0;

					for (var i = 0; i < data.length; i++) {

						data[i].dataRecebimento = moment(data[i].dataRecebimento).format('L');
						data[i].dataInicio = moment(data[i].dataInicio).format('L');
						data[i].dataEntrega = moment(data[i].dataEntrega).format('L');

						somaPorStatus += data[i].folha.valor;

					}

					retorno.resolve(data);
					$scope.somaPorStatus = somaPorStatus;

				})
				.error(function() {

					alert("Sem conexão com a internet");
				})
			}
			return retorno.promise;
		}

		function excluir(id, itens) {

			if(window.confirm("Tem certeza que deseja excluir o projeto " + itens.descricao+ "?")){

				$http.delete('/ProjetoRelatorioBackEnd/rest/agenda/excluir/' + id)
				.success(function() {

					alert("Excluído com sucesso!");
					$window.location.reload();
				})
				.error(function() {
					alert("alguma coisa ruim aconteceu");
				})
			}else {


			}

		}

		function colocarDataInicio(id, iniciar) {

			if(iniciar == true){

				var dataHoje = new Date();

				var objToJson = function (){
					return angular.toJson({
						"id": id,
						"dataInicio": dataHoje,

					});

				};

				$http.put('/ProjetoRelatorioBackEnd/rest/agenda/colocarDataInicio', objToJson())
				.success(function() {
					alert('projeto iniciado com sucesso!');
					$window.location.reload();


				})
				.error(function() {
					console.log('aconteceu algo ruim');
				})

			}else {

				console.log("fazer nada");
			}
		}

		function colocarDataFinal(objeto, terminar, id) {


			if(terminar == true){

				var dataHoje = new Date();
				var dataRecebimento = objeto.dataRecebimento;

				var diaRecebimento = dataRecebimento.substring(0, 2);
				var mesRecebimento = dataRecebimento.substring(3, 5);
				var anoRecebimento = dataRecebimento.substring(6, 10);

				var dataRecebimentoPadraoEng = anoRecebimento+"/"+mesRecebimento+"/"+diaRecebimento; 

				var dataRecebimentoParse = new Date(dataRecebimentoPadraoEng);

//				****************************************************************
				var dataInicio = objeto.dataInicio;

				var diaInicio = dataInicio.substring(0, 2);
				var mesInicio = dataInicio.substring(3, 5);
				var anoInicio = dataInicio.substring(6, 10);

				var dataInicioPadraoEng = anoInicio+"/"+mesInicio+"/"+diaInicio; 

				var dataInicioParse = new Date(dataInicioPadraoEng);

				var objToJson = function (){
					return angular.toJson({
						"id": id,
						"idFolha": objeto.idFolha,
						"descricao": objeto.descricao,
						"dataRecebimento": dataRecebimentoParse,
						"dataInicio": dataInicioParse,
						"dataEntrega": dataHoje,

					});

				};

				console.log(objToJson());

				$http.put('/ProjetoRelatorioBackEnd/rest/agenda/colocarDataFinal', objToJson())
				.success(function() {
					alert('projeto Finalizado com sucesso!');
					$window.location.reload();


				})
				.error(function() {
					console.log('aconteceu algo ruim');
				})

			}else {

				console.log("fazer nada");
			}
		}

		return {

			add: add,
			verFolhas: verFolhas,
			verFolha: verFolha,
			verAgenda: verAgenda,
			excluir: excluir,
			colocarDataInicio: colocarDataInicio,
			verAgendaPorStatus: verAgendaPorStatus,
			colocarDataFinal: colocarDataFinal
		}
	}]);

}())